using System;
using System.Collections.Generic;
using NHibernate.Criterion;
using NHibernate.SqlCommand;
using ProyectoActivos.Const;
using EntitiesAndMappings.Entities;

namespace ProyectoActivos.Daos
{
    public class TrabajadorDAO : BaseDAO<Trabajador>
    {
        public IList<Trabajador> ListarTrabajadoresConContratoActivo()
        {
            IList<Contrato> listaContrato;
            IList<Trabajador> listaTrabajador = new List<Trabajador>();
            using (var session = CreateSessionFactory().OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var criteria = session.CreateCriteria<Contrato>();
                    criteria.CreateAlias("Trabajador", "Trabajador", JoinType.InnerJoin)
                        //.Add(Restrictions.Eq("Estado", "A"))
                        .Add(Restrictions.Eq("Estado", "A"))
                        .AddOrder(Order.Asc("Trabajador.Apellidos"))
                        .AddOrder(Order.Asc("Trabajador.Nombres"));
                    listaContrato = criteria.List<Contrato>();

                    foreach(Contrato contrato in listaContrato)
                    {
                        listaTrabajador.Add(contrato.Trabajador);
                    }


                    transaction.Commit();
                }
            }
            return listaTrabajador;
        }
    }
}